import EmployeeEnum from '@/api/constant/employees' // 引入枚举
import { formatDate } from '@/filters'

// 将数据处理成[[]]形式 map返回一个数组
function formatJson(headers, rows) {
  return rows.map((item) => {
    return Object.keys(headers).map((key) => {
      // 格式化 入职时间和转正时间
      if (headers[key] === 'timeOfEntry' || headers[key] === 'correctionTime') {
        return formatDate(item[headers[key]])
        // 格式化 聘用形式
      } else if (headers[key] === 'formOfEmployment') {
        return item[headers[key]]
          ? EmployeeEnum.hireType.find((obj) => {
            // 判断是否为非数字字符串
            if (isNaN(parseInt(item[headers[key]]))) {
              return item[headers[key]]
            } else {
              return obj.id === parseInt(item[headers[key]])
            }
          }).value
          : '未知'
      }
      return item[headers[key]]
    })
  })
}
// excel 导出方法
export const excelEduce = ({
  rows,
  filename = '员工信息表',
  autoWidth = true,
  bookType,
  multiHeader = '',
  merges = ''
}) => {
  const headers = {
    姓名: 'username',
    手机号: 'mobile',
    入职日期: 'timeOfEntry',
    聘用形式: 'formOfEmployment',
    转正日期: 'correctionTime',
    工号: 'workNumber',
    部门: 'departmentName'
  }
  console.log(rows)
  const data = formatJson(headers, rows)
  // 懒加载 调用导出函数
  import('@/vendor/Export2Excel').then((excel) => {
    excel.export_json_to_excel({
      header: Object.keys(headers), // 表头 必填
      data, // 具体数据 必填
      filename, // 导出文件名 非必填
      autoWidth, // 单元格是否要自适应宽度(默认true) 非必填
      bookType, // 导出的数据类型(xlsx, csv, txt, more  默认xlsx) 非必填
      multiHeader, // 复杂表头 [[]] 格式
      merges // excel 和并项 行为A-Z 列为 1 — ~  例如 ['A1:A2'] A1合并A2
    })
  })
}
